package com.zf.validation.contraint;

import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;

import java.util.regex.Pattern;

/**
 * Phone校验注解的 验证器
 *
 * @author Zhou Feng
 */
public class PhoneValidator implements ConstraintValidator<Phone, String> {
    private Pattern pattern = null;

    /**
     * 初始化操作，在验证开始前调用注解里的方法，从而获取到一些注解里参数的值
     */
    @Override
    public void initialize(Phone phoneAnnotation) {
        String regexp = phoneAnnotation.regexp();
        if (!"".equals(regexp)) {
            this.pattern = Pattern.compile(regexp);
        }
    }

    /**
     * 校验逻辑
     *
     * @param value   前端传入的值
     * @param context 上下文
     * @return 成功返回true, 失败返回false
     */
    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        return pattern == null || pattern.matcher(value).matches();
    }
}
